WINXP-64007BF37

CREATE TABLE [paises] (
	[id_paises] [int] NOT NULL PRIMARY KEY IDENTITY (1,1),
	[nome_paises] [varchar] (70) COLLATE Latin1_General_CI_AS NOT NULL ,
	[sigla_paises] [char] (3) COLLATE Latin1_General_CI_AS NOT NULL ,
	[cod_area_paises] [int] NULL
	) 
	GO


select * from paises

INSERT INTO dbo.paises VALUES ('Brasil', 'BRL', 55);
INSERT INTO dbo.paises VALUES ('Estados Unidos da América', 'EUA', 1);África do Sul
INSERT INTO dbo.paises VALUES ('África do Sul', 'RAS', 27);
INSERT INTO dbo.paises VALUES ('Canada', 'CAN', 1);
INSERT INTO dbo.paises VALUES ('Chile', 'CHL', 56);
INSERT INTO dbo.paises VALUES ('China', 'CHN', 86);
INSERT INTO dbo.paises VALUES ('Argentina', 'ARG', 54);
INSERT INTO dbo.paises VALUES ('India', 'IND', 91);
INSERT INTO dbo.paises VALUES ('Inglaterra', 'ING', 44);
INSERT INTO dbo.paises VALUES ('Paraguai', 'PRG', 595);
INSERT INTO dbo.paises VALUES ('Peru', 'PRU', 51);

UPDATE paises
SET cod_area_paises = 27
WHERE id_paises = 3;

CREATE TABLE [estados] (
	[id_estados] [int] NOT NULL PRIMARY KEY IDENTITY (1,1) ,
	[nome_estados] [varchar] (30) COLLATE Latin1_General_CI_AS NOT NULL ,
	[sigla_estados] [char] (2) COLLATE Latin1_General_CI_AS NOT NULL ,
	[id_paises_estados] [int] NOT NULL , 
	) 
	GO

ALTER TABLE estados
ADD CONSTRAINT fk_paises_estados FOREIGN KEY (id_paises_estados)
REFERENCES paises (id_paises)

SELECT * FROM dbo.estados;

INSERT INTO dbo.estados VALUES ('Acre', 'AC', 1);
INSERT INTO dbo.estados VALUES ('Alagoas', 'AL', 1);
INSERT INTO dbo.estados VALUES ('Amapá', 'AP', 1);
INSERT INTO dbo.estados VALUES ('Amazonas', 'AM', 1);
INSERT INTO dbo.estados VALUES ('Bahia', 'BA', 1);
INSERT INTO dbo.estados VALUES ('Ceará', 'CE', 1);
INSERT INTO dbo.estados VALUES ('Distrito Federal', 'DF', 1);
INSERT INTO dbo.estados VALUES ('Espírito Santo', 'ES', 1);
INSERT INTO dbo.estados VALUES ('Goiás', 'GO', 1);
INSERT INTO dbo.estados VALUES ('Maranhão', 'MA', 1);
INSERT INTO dbo.estados VALUES ('Mato Grosso', 'MT', 1);
INSERT INTO dbo.estados VALUES ('Mato Grosso do Sul', 'MS', 1);
INSERT INTO dbo.estados VALUES ('Minas Gerais', 'MG', 1);
INSERT INTO dbo.estados VALUES ('Pará', 'PA', 1);
INSERT INTO dbo.estados VALUES ('Paraíba', 'PB', 1);
INSERT INTO dbo.estados VALUES ('Paraná', 'PR', 1);
INSERT INTO dbo.estados VALUES ('Pernambuco', 'PE', 1);
INSERT INTO dbo.estados VALUES ('Piauí', 'PI', 1);
INSERT INTO dbo.estados VALUES ('Rio de Janeiro', 'RJ', 1);
INSERT INTO dbo.estados VALUES ('Rio Grande do Norte', 'RN', 1);
INSERT INTO dbo.estados VALUES ('Rio Grande do Sul', 'RS', 1);
INSERT INTO dbo.estados VALUES ('Rondônia', 'RO', 1);
INSERT INTO dbo.estados VALUES ('Roraima', 'RR', 1);
INSERT INTO dbo.estados VALUES ('Santa Catarina', 'SC', 1);
INSERT INTO dbo.estados VALUES ('São Paulo', 'SP', 1);
INSERT INTO dbo.estados VALUES ('Sergipe', 'SE', 1);
INSERT INTO dbo.estados VALUES ('Tocantins', 'TO', 1);
INSERT INTO dbo.estados VALUES ('Alabama', 'AL', 2);
INSERT INTO dbo.estados VALUES ('New York', 'NY', 2);
INSERT INTO dbo.estados VALUES ('Washington', 'WA', 2);

INSERT INTO dbo.estados VALUES ('Ontário', 'ON', 4);
INSERT INTO dbo.estados VALUES ('Quebec', 'QC', 4);
INSERT INTO dbo.estados VALUES ('Nova Escócia', 'NS', 4);

CREATE TABLE [cidades] (
	[id_cidades] [int] NOT NULL PRIMARY KEY IDENTITY (1,1) ,
	[nome_cidades] [varchar] (30) COLLATE Latin1_General_CI_AS NOT NULL ,
	[id_estados_cidades] [int] NOT NULL 
	) 
	GO

ALTER TABLE cidades
	ADD CONSTRAINT fk_estados_cidades FOREIGN KEY (id_estados_cidades)
    REFERENCES estados (id_estados)

SELECT * FROM dbo.cidades

INSERT INTO dbo.cidades VALUES ('São Paulo', 25);
INSERT INTO dbo.cidades VALUES ('Rio de Janeiro', 19);
INSERT INTO dbo.cidades VALUES ('Salvador', 6);
INSERT INTO dbo.cidades VALUES ('Manaus', 4);
INSERT INTO dbo.cidades VALUES ('Juazeiro', 5);
INSERT INTO dbo.cidades VALUES ('Fortaleza', 6);
INSERT INTO dbo.cidades VALUES ('Brasília', 7);
INSERT INTO dbo.cidades VALUES ('Espírito Santo', 8);
INSERT INTO dbo.cidades VALUES ('Goiânia', 9);
INSERT INTO dbo.cidades VALUES ('São Luís', 10);
INSERT INTO dbo.cidades VALUES ('Mato Grosso', 11);
INSERT INTO dbo.cidades VALUES ('Campo Grande',12);
INSERT INTO dbo.cidades VALUES ('Belo Horizonte', 13);
INSERT INTO dbo.cidades VALUES ('Belém', 14);
INSERT INTO dbo.cidades VALUES ('João Pessoa', 15);
INSERT INTO dbo.cidades VALUES ('Curitiba', 16);
INSERT INTO dbo.cidades VALUES ('Recife', 17);
INSERT INTO dbo.cidades VALUES ('Teresina', 18);
INSERT INTO dbo.cidades VALUES ('Rio de Janeiro', 19);
INSERT INTO dbo.cidades VALUES ('Natal', 20);
INSERT INTO dbo.cidades VALUES ('Porto Alegre', 21);
INSERT INTO dbo.cidades VALUES ('Ariquemes', 22);
INSERT INTO dbo.cidades VALUES ('Boa Vista', 23);
INSERT INTO dbo.cidades VALUES ('Joinville', 24);
INSERT INTO dbo.cidades VALUES ('São Paulo', 25);
INSERT INTO dbo.cidades VALUES ('Lagarto', 26);
INSERT INTO dbo.cidades VALUES ('Palmas', 27);

INSERT INTO dbo.cidades VALUES ('Campinas', 25);
INSERT INTO dbo.cidades VALUES ('Guarulhos', 25);
INSERT INTO dbo.cidades VALUES ('São Bernardo do Campo', 25);
INSERT INTO dbo.cidades VALUES ('Santo André', 25);
INSERT INTO dbo.cidades VALUES ('Osasco', 25);
INSERT INTO dbo.cidades VALUES ('São José dos Campos', 25);
INSERT INTO dbo.cidades VALUES ('Santos', 25);
INSERT INTO dbo.cidades VALUES ('Mauá', 25);
INSERT INTO dbo.cidades VALUES ('Jundiaí', 25);
INSERT INTO dbo.cidades VALUES ('Barueri', 25);
INSERT INTO dbo.cidades VALUES ('Caieiras', 25);
INSERT INTO dbo.cidades VALUES ('Cajamar',25);
INSERT INTO dbo.cidades VALUES ('Vinhedo', 25);
INSERT INTO dbo.cidades VALUES ('Borá', 25);
INSERT INTO dbo.cidades VALUES ('Torre de Pedra', 25);
INSERT INTO dbo.cidades VALUES ('Santa Rita d''Oeste', 25);
INSERT INTO dbo.cidades VALUES ('Taquaral', 25);
INSERT INTO dbo.cidades VALUES ('Platina', 25);
INSERT INTO dbo.cidades VALUES ('Balbinos', 25);
INSERT INTO dbo.cidades VALUES ('Boracéia', 25);
INSERT INTO dbo.cidades VALUES ('Planalto', 25);
INSERT INTO dbo.cidades VALUES ('Coroados', 25);
INSERT INTO dbo.cidades VALUES ('Nova Aliança', 25);
INSERT INTO dbo.cidades VALUES ('Clementina', 25);
INSERT INTO dbo.cidades VALUES ('Icém', 25);
INSERT INTO dbo.cidades VALUES ('Cedral', 25);
INSERT INTO dbo.cidades VALUES ('São José da Bela Vista', 25);


CREATE TABLE [bairros] (
	[id_bairros] [int] NOT NULL PRIMARY KEY IDENTITY (1,1) ,
	[nome] [varchar] (70) COLLATE Latin1_General_CI_AS NOT NULL ,
	[id_cidades_bairros] [int] NOT NULL 
	) 
	GO
	
	ALTER TABLE bairros
	ADD CONSTRAINT fk_cidades_bairros FOREIGN KEY (id_cidades_bairros)
    REFERENCES cidades (id_cidades)

INSERT INTO dbo.bairros VALUES ('Jordanésia', 39);
INSERT INTO dbo.bairros VALUES ('Polvilho', 39);

CREATE TABLE [setores] (
	[id_setores] [int] NOT NULL PRIMARY KEY IDENTITY (1,1) ,
	[descricao] [varchar] (30) COLLATE Latin1_General_CI_AS NOT NULL ,
	) 
	GO

INSERT INTO dbo.setores VALUES ('Administrativo');
INSERT INTO dbo.setores VALUES ('Tecnologia da Informação');
INSERT INTO dbo.setores VALUES ('Financeiro');
INSERT INTO dbo.setores VALUES ('Atendimento');
INSERT INTO dbo.setores VALUES ('Jurídico');
INSERT INTO dbo.setores VALUES ('Limpeza');
INSERT INTO dbo.setores VALUES ('Gerência');
INSERT INTO dbo.setores VALUES ('Diretoria');
INSERT INTO dbo.setores VALUES ('Comunicação');
INSERT INTO dbo.setores VALUES ('Comercial');
INSERT INTO dbo.setores VALUES ('Serviços Gerais');
INSERT INTO dbo.setores VALUES ('Cozinha');

SELECT * FROM dbo.setores 

CREATE TABLE [funcoes] (
	[id_funcoes] [int] NOT NULL PRIMARY KEY IDENTITY (1,1),
	[descricao] [varchar] (30) COLLATE Latin1_General_CI_AS NOT NULL ,
	[id_setores_funcoes] [int] NULL 
	)
	GO

ALTER TABLE funcoes
	ADD CONSTRAINT fk_setores_funcoes FOREIGN KEY (id_setores_funcoes)
    REFERENCES setores (id_setores)

select * from funcoes


INSERT INTO dbo.funcoes VALUES ('Gerente de TI', 2);
INSERT INTO dbo.funcoes VALUES ('Gerente Financeiro', 3);
INSERT INTO dbo.funcoes VALUES ('Gerente Administrativo', 1);
INSERT INTO dbo.funcoes VALUES ('Coordenador', 1);
INSERT INTO dbo.funcoes VALUES ('Atendente I', 10);
INSERT INTO dbo.funcoes VALUES ('Atendente II', 10);
INSERT INTO dbo.funcoes VALUES ('Atendente III', 10);
INSERT INTO dbo.funcoes VALUES ('Atendente IV', 10);
INSERT INTO dbo.funcoes VALUES ('Atendente V', 10);
INSERT INTO dbo.funcoes VALUES ('Recepcionista', 4);
INSERT INTO dbo.funcoes VALUES ('Diretor', 8);
INSERT INTO dbo.funcoes VALUES ('Advogado Jr. I', 5);
INSERT INTO dbo.funcoes VALUES ('Advogado Jr. II', 5);
INSERT INTO dbo.funcoes VALUES ('Advogado Jr. III', 5);
INSERT INTO dbo.funcoes VALUES ('Advogado Jr. IV', 5);
INSERT INTO dbo.funcoes VALUES ('Advogado Jr. V', 5);
INSERT INTO dbo.funcoes VALUES ('Analista de Sistema Jr. A', 2);
INSERT INTO dbo.funcoes VALUES ('Analista de Sistema Jr. B', 2);
INSERT INTO dbo.funcoes VALUES ('Analista de Sistema Jr. C', 2);
INSERT INTO dbo.funcoes VALUES ('Analista de Sistema Pl. A', 2);
INSERT INTO dbo.funcoes VALUES ('Analista de Sistema Pl. B', 2);
INSERT INTO dbo.funcoes VALUES ('Analista de Sistema Pl. C', 2);
INSERT INTO dbo.funcoes VALUES ('Analista de Sistema Sr. A', 2);
INSERT INTO dbo.funcoes VALUES ('Analista de Sistema Sr. B', 2);
INSERT INTO dbo.funcoes VALUES ('Analista de Sistema Sr. C', 2);
INSERT INTO dbo.funcoes VALUES ('Auxiliar de Cobrança I', 10);
INSERT INTO dbo.funcoes VALUES ('Auxiliar de Cobrança II', 10);
INSERT INTO dbo.funcoes VALUES ('Auxiliar de Cobrança III', 10);
INSERT INTO dbo.funcoes VALUES ('Auxiliar de Cobrança IV', 10);
INSERT INTO dbo.funcoes VALUES ('Auxiliar de Cobrança V', 10);
INSERT INTO dbo.funcoes VALUES ('Coordenador de Negócio Jr.', 1);
INSERT INTO dbo.funcoes VALUES ('Coordenador de Negócio Pl.', 1);
INSERT INTO dbo.funcoes VALUES ('Coordenador de Negócio Sr.', 1);
INSERT INTO dbo.funcoes VALUES ('Auxiliar Financeiro Jr.', 3);
INSERT INTO dbo.funcoes VALUES ('Auxiliar Financeiro Pl.', 3);
INSERT INTO dbo.funcoes VALUES ('Auxiliar Financeiro Sr.', 3);
INSERT INTO dbo.funcoes VALUES ('Analista de Suporte Jr.', 2);
INSERT INTO dbo.funcoes VALUES ('Analista de Suporte Pl.', 2);
INSERT INTO dbo.funcoes VALUES ('Analista de Suporte Sr.', 2);
INSERT INTO dbo.funcoes VALUES ('Estagiário Jurídico', 5);
INSERT INTO dbo.funcoes VALUES ('Estagiário TI', 2);
INSERT INTO dbo.funcoes VALUES ('Estagiário Administrativo', 1);
INSERT INTO dbo.funcoes VALUES ('Programador Jr. A', 2);
INSERT INTO dbo.funcoes VALUES ('Programador Jr. B', 2);
INSERT INTO dbo.funcoes VALUES ('Programador Jr. C', 2);
INSERT INTO dbo.funcoes VALUES ('Programador Pl. A', 2);
INSERT INTO dbo.funcoes VALUES ('Programador Pl. B', 2);
INSERT INTO dbo.funcoes VALUES ('Programador Pl. C', 2);
INSERT INTO dbo.funcoes VALUES ('Programador Sr. A', 2);
INSERT INTO dbo.funcoes VALUES ('Programador Sr. B', 2);
INSERT INTO dbo.funcoes VALUES ('Programador Sr. C', 2);
INSERT INTO dbo.funcoes VALUES ('Office Boy', 11);
INSERT INTO dbo.funcoes VALUES ('Auxiliar Administrativo I', 1);
INSERT INTO dbo.funcoes VALUES ('Auxiliar Administrativo II', 1);
INSERT INTO dbo.funcoes VALUES ('Auxiliar Administrativo III', 1);
INSERT INTO dbo.funcoes VALUES ('Advogado Jr.', 5);
INSERT INTO dbo.funcoes VALUES ('Advogado Pl.', 5);
INSERT INTO dbo.funcoes VALUES ('Advogado Sr.', 5);
INSERT INTO dbo.funcoes VALUES ('Auxiliar de Serviços Gerais', 11);
INSERT INTO dbo.funcoes VALUES ('Copeira', 12);
INSERT INTO dbo.funcoes VALUES ('CEO', 8);
INSERT INTO dbo.funcoes VALUES ('Dono', 8);


CREATE TABLE [funcionarios] (
	[id_funcionarios] [int] NOT NULL PRIMARY KEY IDENTITY (1,1),
	[nome_funcionarios] [varchar] (80) COLLATE Latin1_General_CI_AS NOT NULL ,
	[usuario_funcionarios] [varchar] (20) COLLATE Latin1_General_CI_AS NOT NULL ,
	[senha_funcionarios] [varchar] (20) COLLATE Latin1_General_CI_AS NOT NULL ,
	[nascimento_funcionarios] [datetime] NOT NULL,
	[cpf] [bigint] NOT NULL,
	[rg] [varchar] (15) COLLATE Latin1_General_CI_AS NOT NULL ,
	[data_cadastro_funcionarios] [datetime] NOT NULL ,
	[data_admissao_funcionarios] [datetime] NOT NULL ,
	[data_demissao_funcionarios] [datetime] NULL ,
	[status_funcionarios] char(1) NOT NULL CONSTRAINT ck_funcionarios_Status CHECK(status_funcionarios = 'A' or status_funcionarios = 'D'),
	[altura] [numeric](3, 2) NULL ,
	[id_funcoes_funcionarios] [int] NOT NULL 
	)
	GO

ALTER TABLE dbo.funcionarios 
    ALTER COLUMN cpf BIGINT NOT NULL 

ALTER TABLE funcionarios
	ADD CONSTRAINT fk_funcoes_funcionarios FOREIGN KEY (id_funcoes_funcionarios)
    REFERENCES funcoes (id_funcoes)

INSERT INTO dbo.funcionarios VALUES ('Ademário Fernandes Ramos Júnior', 
				     'ademario', 
				     'ademario', 
				     '1979-04-05 00:00:00.000', 
				     28304965828, 
				     '34.238.124-6',
				     '2014-02-17 00:00:00.000', 
				     '2013-11-01 00:00:00.000', 
   				     NULL, 
				     'A', 
				     1.76, 
				     20);
					 
INSERT INTO dbo.funcionarios VALUES ('Ricardo Novachi Júnior', 
				     'ricardo', 
				     'ricardo', 
				     '1979-10-10 00:00:00.000', 
				     28304965838, 
				     '34.238.124-6',
				     '2014-02-17 00:00:00.000', 
				     '2013-11-01 00:00:00.000', 
   				     NULL, 
				     'A', 
				     1.70, 
				     20);


CREATE TABLE [responsaveis] (
	[id_responsaveis] [int] NOT NULL PRIMARY KEY IDENTITY (1,1) ,
	[nome_responsaveis] [varchar] (70) COLLATE Latin1_General_CI_AS NOT NULL ,
	[nascimento] [datetime] NOT NULL ,
	[paternidade] [int] NOT NULL ,
	[id_bairros_responsaveis] [int] NOT NULL 
	) 
	GO


ALTER TABLE responsaveis
	ADD CONSTRAINT fk_bairros_responsaveis FOREIGN KEY (id_bairros_responsaveis)
    REFERENCES bairros (id_bairros)

CREATE TABLE [clientes] (
	[id_clientes] [int] NOT NULL PRIMARY KEY IDENTITY (1,1) ,
	[nome_clientes] [varchar] (30) COLLATE Latin1_General_CI_AS NOT NULL ,
	[nascimento_clientes] [datetime] NOT NULL ,
	[data_cadastro_clientes] [datetime] NOT NULL ,
	[limite_compra] [numeric](15, 6) NULL ,
	[id_bairros_clientes] [int] NOT NULL,
	[id_responsaveis_clientes] [int] NOT NULL 
	) 
	GO

ALTER TABLE clientes
	ADD CONSTRAINT fk_bairros_clientes FOREIGN KEY (id_bairros_clientes)
    REFERENCES bairros (id_bairros)

ALTER TABLE clientes
	ADD CONSTRAINT fk_responsaveis_clientes FOREIGN KEY (id_responsaveis_clientes)
    REFERENCES responsaveis (id_responsaveis)

CREATE TABLE [salarios] (
	[id_salarios] [int] NOT NULL PRIMARY KEY IDENTITY (1,1) ,
	[id_funcionarios_salarios] [int] NOT NULL,
	[valores_salarios] [numeric](15, 6) NOT NULL ,
	) 
	GO

ALTER TABLE salarios
	ADD CONSTRAINT fk_funcionarios_salarios FOREIGN KEY (id_funcionarios_salarios)
    REFERENCES funcionarios (id_funcionarios)
	
	
--- EXEMPLOS PRATICOS


IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'dbo.fk_funcoes_funcionarios')AND parent_object_id = OBJECT_ID(N'dbo.funcionarios'))
 ALTER TABLE [funcionarios] DROP CONSTRAINT [fk_funcoes_funcionarios]

IF (OBJECT_ID('fk_funcoes_funcionarios', 'F') IS NOT NULL)
BEGIN
    PRINT 'Ola'
END
ELSE 
BEGIN
    PRINT 'Alo'
END

C = CHECK constraint
D = DEFAULT (constraint or stand-alone)
F = FOREIGN KEY constraint
PK = PRIMARY KEY constraint
UQ = UNIQUE constraint